home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
windchil.pqs
/
windchil.pas
Wrap
Pascal/Delphi Source File
|
1979-12-31
|
4KB
|
105 lines
(*$LINESIZE:132,$PAGESIZE:62,$SIMPLE,$SYMTAB- *)
(** WINDCHILL - GENERATE A WIND-CHILL EFFECTIVE TEMPERATURE CHART.
*
* ANDY MICKEL 74/02/01, 80/02/08.
*
* COPYRIGHT (C) 1980.
*)
(* THE WIND-CHILL EFFECTIVE TEMPERATURE IS DETERMINED BY CALCULATING
* THE RELATIVE HEAT LOSS RESULTING FROM RADIATION, CONDUCTION, AND CONVECTION
* FOR A GIVEN AIR TEMPERATURE AND WINDSPEED. THE EQUATION FOR HEAT LOSS IS:
*
* H = (C1 + C2 * SQRT(V) + C3 * V) * (33.0 - T)
*
* WHERE H IS THE HEAT LOSS (WIND-CHILL INDEX) IN KILOGRAM-CALORIES PER
* SQUARE METER PER HOUR (KG-CAL/M*M/HR),
* V IS THE WIND SPEED IN METERS PER SECOND (MPS),
* 33.0 - T IS THE DIFFERENCE BETWEEN NORMAL SKIN TEMPERATURE AND AIR
* TEMPERATURE IN DEGREES CELSIUS,
* C1 = 10.45 (COOLING CAUSED BY RADIATION AND CONDUCTION),
* C2 = 10.00 (COOLING CAUSED BY CONVECTION), AND
* C3 = -1.00 .
*
* THE CONSTANTS C1, C2, AND C3 DEPEND ON THE BODY BEING COOLED.
* COMPLETE SHADE IS ASSUMED; UNDER BRIGHT SUNSHINE THE HEAT LOSS SHOULD BE
* REDUCED BY ABOUT 200 KILOGRAM-CALORIES PER SQUARE METER PER HOUR.
*
* REFERENCE: "WIND CHILL (EQUIVALENT TEMPERATURES)", INFORMATION ATTACHMENT
* NO. 3, U.S. DEPT. OF COMMERCE, NATIONAL OCEANIC AND ATMOSPHERIC
* ADMINISTRATION, SILVER SPRING, MD, APRIL 1971.
*)
PROGRAM WINDCHILL(OUTPUT);
CONST
SPEEDINCREMENT = 5.0 (* KPH *);
MAXSPEEDS = 16 (* WIDTH OF CHART - 1 *);
MAXTEMP = 2 (* DEGREES CELSIUS *);
MINTEMP = - 33;
SKINTEMP = 33;
CRCOOLING = 10.45 (* CONDUCTION AND RADIATION *);
CCOOLING = 10.00 (* CONVECTION *);
FOURBLANKS = ' ';
TYPE
SPEEDRANGE = 0 .. MAXSPEEDS;
VAR
CHART: ARRAY [SPEEDRANGE] OF REAL (* ONE LINE OF CHART *);
KPH2MPS: REAL (* CONVERSION FACTOR:
KILOMETERS PER HOUR TO METERS PER SECOND. *);
TEMP: MINTEMP .. MAXTEMP;
ADJTEMP: REAL;
WINDSPEED: REAL;
WALKINGSPEED: REAL;
DENOMINATOR: REAL;
SPEED: SPEEDRANGE;
PROCEDURE WRITEHEADINGS;
BEGIN
PAGE(OUTPUT);
WRITELN;
WRITELN;
WRITELN('WIND-CHILL EFFECTIVE TEMPERATURE CHART': 87);
WRITELN('---------- --------- ----------- -----': 87);
WRITELN;
WRITELN;
WRITELN('TEMPERATURE': 12, 'WIND SPEED': 61);
WRITELN('(CELSIUS)': 11, '(KILOMETERS/HOUR)': 66);
WRITELN;
END (* WRITEHEADINGS *);
BEGIN (* WINDCHILL *)
KPH2MPS := 10.0 / 36.0;
WALKINGSPEED := 6.0 * KPH2MPS;
DENOMINATOR := CRCOOLING + CCOOLING * SQRT(WALKINGSPEED) - WALKINGSPEED;
WRITEHEADINGS;
WRITE(FOURBLANKS, FOURBLANKS, FOURBLANKS);
FOR SPEED := 0 TO MAXSPEEDS DO
WRITE((SPEEDINCREMENT * SPEED): 7: 1);
WRITELN;
WRITELN;
FOR TEMP := MAXTEMP DOWNTO MINTEMP DO
BEGIN
ADJTEMP := SKINTEMP - TEMP;
FOR SPEED := 0 TO MAXSPEEDS DO
BEGIN
WINDSPEED := SPEEDINCREMENT * KPH2MPS * SPEED;
IF WINDSPEED < WALKINGSPEED
THEN
CHART[SPEED] := TEMP
ELSE
CHART[SPEED] := SKINTEMP - (CRCOOLING + CCOOLING * SQRT(WINDSPEED) - WINDSPEED) * (ADJTEMP / DENOMINATOR);
END (*FOR*);
WRITE((TEMP * 1.0): 8: 1, FOURBLANKS);
FOR SPEED := 0 TO MAXSPEEDS DO
WRITE(CHART[SPEED]: 7: 1);
WRITELN;
IF ODD(TEMP) THEN
WRITELN
END (*FOR*)
END (* WINDCHILL *).